package Newplace.Jdbc.JavaTestJDBC;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

/**
 * @author SWJ
 * @create 2021-07-02 17:17
 * 利用jdbc 向dept表中插入数据
 */
public class test2 {
    public static void main(String[] args) throws Exception {
        /**
         * 1.注册驱动
         * 2.获取连接
         * 3.获取传输器
         * 4.执行SQL
         * 5.解析结果集
         * 6.释放资源
         *
         * Statement提供了三种执行SQL语句的方法：executeQuery、executeUpdate和 execute。
         * 使用哪一个方法由 SQL 语句所产生的内容决定。
         * 一、方法executeQuery()用户产生单个结果集的语句，
         * 使用最多的的执行SQL语句方法是executeQuery，这个方法用来执行select语句
         *
         * 二、方法executeUpdate()用于执行insert，delete，update等SQL语句，
         * executeupdate返回的值是一个整数，表示受影响的行数，对于create table等不操作行的语句，
         * executeupdate的返回值为0, 下面示例是将“张三”的名字改为“张三1”：
         *
         * 三、execute()方法
         * execute方法应该仅在语句能返回多个ResultSet对象、多个更新计数或ResultSet对象与更新计数的组合时使用。
         * 其返回值为布尔类型：是true时，表示执行的是查询语句，可以通过getResultset方法获取结果；返回值为false时，
         * 执行的是更新语句或DDL语句，getUpdateCount方法获取更新的记录数量
         * execute()方法处理的是较复杂的SQL语句或结果。
         * 当某个过程返回两个结果集，则在使用方法 execute 执行该过程后，必须调用方法getResultSet()获得第一个结果集，
         * 然后调用适当的getXXX方法获取其中的值。要获得第二个结果集，需要先调用getMoreResults()方法，然后再调用getResultSet方法。
         * 当某个过程返回两个更新计数，则首先调用方法getUpdateCount()，然后调用getMoreResults()，并再次调用getUpdateCount()。
         * 对于不知道返回内容，则情况更为复杂。如果结果是ResultSet对象，则方法execute 返回 true；如果结果是 Java int，则返回 false。
         * 如果返回int，则意味着结果是更新计数或执行的语句是 DDL 命令。
         * 在调用方法 execute 之后要做的第一件事情是调用getResultSet或getUpdateCount。
         * 调用方法getResultSet可以获得两个或多个ResultSet对象中第一个对象；
         * 或调用方法getUpdateCount可以获得两个或多个更新计数中第一个更新计数的内容。
         *
         * */
        Class.forName("com.mysql.jdbc.Driver");
        String user = "root";
        String pwd = "199881";
        String url = "jdbc:mysql://localhost:3306/cbg2011";
        Connection conn = DriverManager.getConnection(url, user, pwd);
        Statement st = conn.createStatement();
        String sql = "insert into dept values (null,'java开发部','北京')";

//        ResultSet rs = st.executeQuery(sql);
        /**4、执行查询；要用statement类的executeQuery()方法来下达select指令以查询数据库，
         * executeQuery()方法会把数据库响应的查询结果存放在ResultSet类对象中供我们使用。
         * 即语句：ResultSet rs=s.executeQuery(sql);
         */
        //executeUpdate用来执行增删改的SQL，返回影响行数
        int rows = st.executeUpdate(sql);
        System.out.println("执行成功！");


    }

}

